<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script type="text/javascript">
        window.onload=function()
        {
            //用Promise封装AJAX
            //接口地址：https://api.apiopen.top/getJoke

            const p=new Promise((resolve,reject)=>{
                //1.创建对象
                const xhr=new XMLHttpRequest();
            
                //2.初始化,输入接口发送类型和接口地址
                xhr.open("GET","https://api.apiopen.top/getJoke");

                //3.发送
                xhr.send();

                //4.绑定事件，处理响应结果
                xhr.onreadystatechange=function()
                {
                    //状态判断
                    if(xhr.readyState===4)
                    {
                        //判断相应状态码，也就是>=200和<300
                        if(xhr.status>=200&&xhr.status<300)
                        {
                            //如果成功，就需要修改实例对象p的状态来表示成功
                            resolve(xhr.response);
                        }
                        else
                        {
                            //如果失败，就需要修改实例对象p的状态来表示失败
                            reject(xhr.status);
                        }
                    }
                };
            });
            //此时控制台不会输出任何东西，因为没有指定后续回调

            //指定回调
            p.then(function(value){
                console.log(value);
            },function(reason){
                console.log(reason);
            });
            //如果失败，那么回调函数输出404
        };
    </script>
</head>
<body>
    
</body>
</html>